home *** CD-ROM | disk | FTP | other *** search
/ Developer CD Series 1998 January: Mac OS SDK / Dev.CD Jan 98 SDK1.toast / Development Kits (Disc 1) / Interfaces&Libraries / Universal / Interfaces / RIncludes / IntlResources.r < prev    next >
Encoding:
C/C++ Source or Header  |  1997-08-12  |  25.6 KB  |  625 lines  |  [TEXT/MPS ]

  1. /*
  2.      File:        IntlResources.r
  3.  
  4.      Contains:    International Resource definitions.
  5.  
  6.      Version:    Technology:    System 7.5
  7.                  Release:    Universal Interfaces 3.0.1
  8.  
  9.      Copyright:    © 1983-1997 by Apple Computer, Inc., all rights reserved.
  10.  
  11.      Bugs?:        Please include the the file and version information (from above) with
  12.                  the problem description.  Developers belonging to one of the Apple
  13.                  developer programs can submit bug reports to:
  14.  
  15.                      devsupport@apple.com
  16.  
  17. */
  18.  
  19. #ifndef __INTLRESOURCES_R__
  20. #define __INTLRESOURCES_R__
  21.  
  22. #ifndef __CONDITIONALMACROS_R__
  23. #include "ConditionalMacros.r"
  24. #endif
  25.  
  26. #ifndef __SCRIPT_R__
  27. #include "Script.r"            /* to get Region, Language, and Script codes */
  28. #endif
  29.  
  30. /*
  31.     Note:    Region, Language, and Script are no longer used.
  32.             Instead, Script.r #defines each value for those types.
  33.             Existing resouce source files should Rez just fine, but when
  34.             DeRezed the numeric values will be used instead of the symbolic name.
  35. */
  36. /*-------------------------------------Equates------------------------------------------*/
  37. /*    The following are used to set characters used in INTL resources.
  38. */
  39. #define    periodSymbol        "."
  40. #define    commaSymbol            ","
  41. #define    semicolonSymbol        ";"
  42. #define    dollarsignSymbol    "$"
  43. #define    slashSymbol            "/"
  44. #define    colonSymbol            ":"
  45.  
  46.  
  47. /*----------------------------INTL (0) • International Formatting Information-----------*/
  48. type 'INTL' (0) {
  49.         char        period = periodSymbol;                        /* decimal pt sep        */
  50.         char        comma = commaSymbol;                        /* thousands sep        */
  51.         char        semicolon = semicolonSymbol;                /* list sep                */
  52.         char        dollarsign = dollarsignSymbol;                /* currSym1                */
  53.         char;                                                    /* currSym2                */
  54.         char;                                                    /* currSym3                */
  55.  
  56.         /* currFmt */
  57.         boolean        noLeadZero, leadingZero;                    /* leading unit zero    */
  58.         boolean        noTrailingZero, trailingZero;                /* trailing dec zero    */
  59.         boolean        paren, minusSign;                            /* negative rep            */
  60.         boolean        trails, leads;                                /* curr sym position    */
  61.         fill bit[4];                                            /* not used                */
  62.         byte        monDayYear, dayMonYear, yearMonDay,            /* dateOrder            */
  63.                     monYearDay, dayYearMon, yearDayMon;
  64.  
  65.         /* shrtDateFmt */
  66.         boolean        noCentury, century;                            /* century incl            */
  67.         boolean        noMonthLeadZero, monthLeadZero;                /* mon lead zero        */
  68.         boolean        noDayLeadZero, dayLeadZero;                    /* day lead zero        */
  69.         fill bit[5];                                            /* filler                */
  70.         char        slash = slashSymbol;                        /* date sep                */
  71.         byte        twentyFourHour, twelveHourZeroCycle,        /* timeCycle            */
  72.                     twelveHour = 255;
  73.  
  74.         /* timeFmt */
  75.         boolean        noHoursLeadZero, hoursLeadZero;                /* hours lead zero        */
  76.         boolean        noMinutesLeadZero, minutesLeadZero;            /* min lead zero        */
  77.         boolean        noSecondsLeadZero, secondsLeadZero;            /* sec lead zero        */
  78.         fill bit[5];                                            /* filler                */
  79.         string[4];                                                /* mornStr                */
  80.         string[4];                                                /* eveStr                */
  81.         char;                                                    /* timeSep                */
  82.         char;                                                    /* time1Stuff            */
  83.         char;                                                    /* time2Stuff            */
  84.         char;                                                    /* time3Stuff            */
  85.         char;                                                    /* time4Stuff            */
  86.         char;                                                    /* time5Stuff            */
  87.         char;                                                    /* time6Stuff            */
  88.         char;                                                    /* time7Stuff            */
  89.         char;                                                    /* time8Stuff            */
  90.         byte        standard, metric = 255;                        /* metricSys            */
  91.         byte;                                                    /* INTL0 region            */
  92.         byte;                                                    /* version                */
  93. };
  94. /*----------------------------itl0 • International Formatting Information---------------*/
  95. type 'itl0' as 'INTL' (0);
  96. /*----------------------------INTL (1) • International Date/Time Information------------*/
  97. type 'INTL' (1) {
  98.         /* Day names */
  99.         array [7] {
  100.             pstring[15];                                        /* Sunday, Monday...    */
  101.         };
  102.  
  103.         /* Month names */
  104.         array [12] {
  105.             pstring[15];                                        /* January, February...    */
  106.         };
  107.  
  108.         byte        dayName, none=255;                            /* suppressDay            */
  109.         byte        dayMonYear, monDayYear = 255;                /* longDate format        */
  110.         byte        noDayLeadZero, dayLeadZero = 255;            /* dayLeading0            */
  111.         byte;                                                    /* abbrLen                */
  112.         string[4];                                                /* st0                    */
  113.         string[4];                                                /* st1                    */
  114.         string[4];                                                /* st2                    */
  115.         string[4];                                                /* st3                    */
  116.         string[4];                                                /* st4                    */
  117.         byte;                                                    /* INTL1 region         */
  118.         byte;                                                    /* version                */
  119.         hex string    DefaultReturn = "\$4E\$75";                    /* local routine - If
  120.                                                                      you have one, use
  121.                                                                    $$Resource to insert
  122.                                                                    code here.  Otherwise,
  123.                                                                    you must have a 68000
  124.                                                                    return instruction.
  125.                                                                    Use DefaultReturn.    */
  126. };
  127. /*----------------------------itl1 • International Date/Time Information----------------*/
  128. /* This is separated out because it is changed for 7.0 to be different than 'INTL' (1).    */
  129. /* The old INTL (1) format had a local routine field at the end. This was to be used    */
  130. /* for localized string sorting code. However, for the last 4 years, string sorting has    */
  131. /* been handled with the 'itl2' resource, and the local routine field has been ignored.    */
  132. /* In most 'itl1' resources, it just contains a single RTS instruction (hex $4E75).        */
  133. /* This field is now used to flag the 7.0 extensions. If it is $4E75, the old format is    */
  134. /* assumed. If it is $A89F, the new format is assumed: $A89F is unimplemented trap,        */
  135. /* which would never have occurred as the first instruction in a local routine. Old        */
  136. /* 'itl1' resources with a local routine will be handled correctly by the code, but can    */
  137. /* not be Rezzed or DeRezzed with this template. They should be updated to either have    */
  138. /* $4E75 in the local routine field, with nothing else following, or to have $A89F in    */
  139. /* the local routine filed, followed by extended data in the format given below. The    */
  140. /* version field was not used to mark this change because various current 'itl1'        */
  141. /* resources use very different version numbers, including 0, 1, and 128.                */
  142.  
  143. type 'itl1' {
  144.         /* Day names */
  145.         array [7] {
  146.             pstring[15];                                        /* Sunday, Monday...    */
  147.         };
  148.  
  149.         /* Month names */
  150.         array [12] {
  151.             pstring[15];                                        /* January, February...    */
  152.         };
  153.  
  154.         byte        dayName, none=255;                            /* suppressDay            */
  155.         byte        dayMonYear, monDayYear = 255;                /* longDate format        */
  156.         byte        noDayLeadZero, dayLeadZero = 255;            /* dayLeading0            */
  157.         byte;                                                    /* abbrLen                */
  158.         string[4];                                                /* st0                    */
  159.         string[4];                                                /* st1                    */
  160.         string[4];                                                /* st2                    */
  161.         string[4];                                                /* st3                    */
  162.         string[4];                                                /* st4                    */
  163.         byte;                                                    /* region code             */
  164.         byte;                                                    /* version                */
  165.         switch    {
  166.             case oldFormat:
  167.                 key hex integer = $4E75;                        /* old format key        */
  168.             case extFormat:
  169.                 key hex integer = $A89F;                        /* extended format key    */
  170.                 hex integer;                                    /* version                */
  171.                 hex integer;                                    /* format                */
  172.                 integer;                                        /* calendar code        */
  173.                 unsigned longint = extraDays >> 3;                            /* offset to extraDays table    */
  174.                 unsigned longint = (endExtraDays - extraDays) >> 3;            /* length of extraDays table    */
  175.                 unsigned longint = extraMonths >> 3;                        /* offset to extraMonths table    */
  176.                 unsigned longint = (endExtraMonths - extraMonths) >> 3;        /* length of extraMonths table    */
  177.                 unsigned longint = abbrevDays >> 3;                            /* offset to abbrevDays table    */
  178.                 unsigned longint = (endAbbrevDays - abbrevDays) >> 3;        /* length of abbrevDays table    */
  179.                 unsigned longint = abbrevMonths >> 3;                        /* offset to abbrevMonths table    */
  180.                 unsigned longint = (endAbbrevMonths - abbrevMonths) >> 3;    /* length of abbrevMonths table    */
  181.                 unsigned longint = extraSeparators >> 3;                    /* offset to extraSeparators table    */    /*<10>*/
  182.                 unsigned longint = (endExtraSeparators - extraSeparators) >> 3;    /* len of extraSeparators table    */    /*<10>*/
  183. extraDays:
  184.                 integer = $$CountOf(extraDaysArray);            /* number of extra days    */
  185.                 array extraDaysArray {                            /* array of extra names        */
  186.                     pstring;                                    /* extra day name string    */
  187.                 };
  188.                 align word;                                                                            /*<22>*/
  189. endExtraDays:
  190. extraMonths:
  191.                 integer = $$CountOf(extraMonthArray);            /* number of extra months    */
  192.                 array extraMonthArray {                            /* array of extra names        */
  193.                     pstring;                                    /* extra month name string    */
  194.                 };
  195.                 align word;                                                                            /*<22>*/
  196. endExtraMonths:
  197. abbrevDays:
  198.                 integer = $$CountOf(abbrevDaysArray);            /* number of abbrev days    */
  199.                 array abbrevDaysArray {                            /* array of abbrev names    */
  200.                     pstring;                                    /* abbrev day name string    */
  201.                 };
  202.                 align word;                                                                            /*<22>*/
  203. endAbbrevDays:
  204. abbrevMonths:
  205.                 integer = $$CountOf(abbrevMonthArray);            /* number of abbrev months    */
  206.                 array abbrevMonthArray {                        /* array of abbrev names    */
  207.                     pstring;                                    /* abbrev month name string    */
  208.                 };
  209.                 align word;                                                                            /*<22>*/
  210. endAbbrevMonths:
  211. extraSeparators:
  212.                 integer = $$CountOf(extraSeparatorsArray);        /* number of extra separators    */    /*<10>*/
  213.                 array extraSeparatorsArray {                    /* array of separator strings    */    /*<10>*/
  214.                     pstring;                                    /* separator string                */    /*<10>*/
  215.                 };
  216.                 align word;                                                                            /*<22>*/
  217. endExtraSeparators:
  218.         };
  219. };
  220. /*----------------------------itl2 • International String Comparison Package Hooks-----*/
  221. /*
  222.  * Note that this type assumes a particular ordering of code and tables, although
  223.  * that order is not required in order for the resource to be used correctly by
  224.  * the code.
  225.  *
  226.  * There is some ugly stuff at the end, because
  227.  * 1. The itl2 resource has several different formats.
  228.  * 2. The offset to the FindScriptTable is only present in one format: when length
  229.  *    fields exist.
  230.  * 3. Even in that format, the FindScriptTable itself is optional; if it is not
  231.  *    present, the offset to it is 0.
  232.  * 4. The optional FindScriptTable is preceded by the variable-length wrapTable.
  233.  *    To determine the wrapTable length when DeRezzing, we need to use the offset
  234.  *    to FindScriptTable if the offset exists and is nonzero. Otherwise, wrapTable
  235.  *    extends to the end of the resource.
  236.  * The single hex string at the end of the wrapTable is actually represented in
  237.  * three different arrays whose dimensions are logical expressions. For a given
  238.  * format, one of the arrays will have a dimension 1, and the others will have a
  239.  * dimension 0.
  240.  */
  241.  
  242. type 'itl2' {
  243.         switch {
  244.             case pre604:
  245.                 integer = initHook1 >> 3;                            /* init hook offset            */
  246.                 integer = fetchHook1 >> 3;                            /* fetch hook offset        */
  247.                 integer = vernierHook1 >> 3;                        /* vernier hook offset        */
  248.                 integer = projectHook1 >> 3;                        /* project hook offset        */
  249.                 bitstring[15] = rsvd1Hook1 >> 4;
  250.                 key boolean = 0;
  251.                 integer = rsvd2Hook1 >> 3;                            /* rsvd2 hook offset        */
  252.     initHook1:
  253.                 hex string [(fetchHook1 - initHook1) >> 3];            /* initHook code            */
  254.     fetchHook1:
  255.                 hex string [(vernierHook1 - fetchHook1) >> 3];        /* fetchHook code            */
  256.     vernierHook1:
  257.                 hex string [(projectHook1 - vernierHook1) >> 3];    /* vernierHook code            */
  258.     projectHook1:
  259.                 hex string [(rsvd1Hook1 - projectHook1) >> 3];        /* projectHook code            */
  260.     rsvd1Hook1:
  261.                 hex string [(rsvd2Hook1 - rsvd1Hook1) >> 3];        /* rsvd1Hook code            */
  262.     rsvd2Hook1:
  263.                 hex string;                                            /* rsvd2Hook/exitHook code    */
  264.             case atLeast604:
  265.                 integer = initHook2 >> 3;                            /* init hook offset            */
  266.                 integer = fetchHook2 >> 3;                            /* fetch hook offset        */
  267.                 integer = vernierHook2 >> 3;                        /* vernier hook offset        */
  268.                 integer = projectHook2 >> 3;                        /* project hook offset        */
  269.                 bitstring[15] = -1;
  270.                 key boolean = 1;
  271.                 integer = rsvd2Hook2 >> 3;                            /* rsvd2 hook offset        */
  272.                 integer = typeList >> 3;                            /* TypeList offset            */
  273.                 integer = classArray >> 3;                            /* ClassArray offset        */
  274.                 integer = upperList >> 3;                            /* UpperList offset            */
  275.                 integer = lowerList >> 3;                            /* LowerList offset            */
  276.                 integer = upperNoMarkList >> 3;                        /* UpperNoMarkList offset    */
  277.                 integer = wordTable >> 3;                            /* WordTable offset            */
  278.                 integer = wrapTable >> 3;                            /* WrapTable offset            */
  279.                 integer = noMarkList >> 3;                            /* NoMarkList offset        */
  280.                 unsigned hex integer;                                /* version number            */
  281.     formatCode:
  282.                 switch {
  283.                     case noLengthFields:
  284.                         key integer = 0;                            /* format code                */
  285.     extraHdr:
  286.                         hex string [(initHook2 - extraHdr) >> 3];    /* extra header, if any        */
  287.                     case haveLengthFields:
  288.                         key integer = 1;                            /* format code                */
  289.                         wide array [14] {
  290.                             integer;                                /* length fields            */
  291.                         };
  292.     findScriptTableOffset:
  293.                         integer = findScriptTable[1,1] >> 3;        /* findScriptTable offset    */
  294.                         integer;                                    /* findScriptTable length    */
  295.                 };
  296.     initHook2:
  297.                 hex string [(fetchHook2 - initHook2) >> 3];            /* initHook code             */
  298.     fetchHook2:
  299.                 hex string [(vernierHook2 - fetchHook2) >> 3];        /* fetchHook code             */
  300.     vernierHook2:
  301.                 hex string [(projectHook2 - vernierHook2) >> 3];    /* vernierHook code         */
  302.     projectHook2:
  303.                 hex string [(rsvd2Hook2 - projectHook2) >> 3];        /* projectHook code         */
  304.     rsvd2Hook2:
  305.                 hex string [(classArray - rsvd2Hook2) >> 3];        /* rsvd2Hook/exitHook code    */                                                    /* code */
  306.     classArray:
  307.                 hex string [(typeList - classArray) >> 3];            /* classArray table            */
  308.     typeList:
  309.                 hex string [(upperList - typeList) >> 3];            /* typeList table            */
  310.     upperList:
  311.                 hex string [(lowerList - upperList) >> 3];            /* upperList table            */
  312.     lowerList:
  313.                 hex string [(upperNoMarkList - lowerList) >> 3];    /* lowerList table            */
  314.     upperNoMarkList:
  315.                 hex string [(noMarkList - upperNoMarkList) >> 3];    /* upperNoMarkList table    */
  316.     noMarkList:
  317.                 hex string [(wordTable - noMarkList) >> 3];            /* noMarkList table            */
  318.     wordTable:
  319.                 switch {
  320.                     case tupleFormat:
  321.                         key boolean = 0;
  322.                         hex bitstring[7];                            /* class for null            */
  323.                         hex string [255];                            /* class for other chars    */
  324.                         integer = $$CountOf(WordTuples) - 1;
  325.                         wide array WordTuples {                        /* packed tuple defns        */
  326.                             hex unsigned integer;
  327.                         };
  328.                     case stateFormat:
  329.                         key boolean = 1;
  330.                         bitstring[15];                                /* flags & format            */
  331.                         unsigned hex integer;                        /* version                    */
  332.                         integer = (wordClass - wordTable) >> 3;        /* offset to class table    */
  333.                         integer = (wordAux - wordTable) >> 3;        /* offset to aux class tbl    */
  334.                         integer = (wordBackwd - wordTable) >> 3;    /* offset to back state tbl    */
  335.                         integer = (wordForwd - wordTable) >> 3;        /* offset to forw state tbl    */
  336.                         integer;                                    /* doBackupMin                */
  337.     wordLength:
  338.                         integer;                                    /* length                    */
  339.     wordClass:
  340.                         hex string [(wordAux - wordClass) >> 3];    /* class table                */
  341.     wordAux:
  342.                         hex string [(wordBackwd - wordAux) >> 3];    /* aux class table            */
  343.     wordBackwd:
  344.                         hex string [(wordForwd - wordBackwd) >> 3];    /* state table for backup    */
  345.     wordForwd:
  346.                         hex string [$$Word(wordLength) - ((wordForwd - wordTable) >> 3)]; /* tbl */
  347.                 };
  348.     endWordTable:
  349.                 hex string [(wrapTable - endWordTable) >> 3];        /* extra stuff, if any        */
  350.     wrapTable:
  351.                 switch {
  352.                     case tupleFormat:
  353.                         key boolean = 0;
  354.                         hex bitstring[7];                            /* class for null            */
  355.                         hex string [255];                            /* class for other chars    */
  356.                         integer = $$CountOf(WrapTuples) - 1;
  357.                         wide array WrapTuples {                        /* packed tuple defns        */
  358.                             hex unsigned integer;
  359.                         };
  360.                     case stateFormat:
  361.                         key boolean = 1;
  362.                         bitstring[15];                                /* flags & format            */
  363.                         unsigned hex integer;                        /* version                    */
  364.                         integer = (wrapClass - wrapTable) >> 3;        /* offset to class table    */
  365.                         integer = (wrapAux - wrapTable) >> 3;        /* offset to aux class tbl    */
  366.                         integer = (wrapBackwd - wrapTable) >> 3;    /* offset to back state tbl    */
  367.                         integer = (wrapForwd - wrapTable) >> 3;        /* offset to forw state tbl    */
  368.                         integer;                                    /* doBackupMin                */
  369.     wrapLength:
  370.                         integer;                                    /* length                    */
  371.     wrapClass:
  372.                         hex string [(wrapAux - wrapClass) >> 3];    /* class table                */
  373.     wrapAux:
  374.                         hex string [(wrapBackwd - wrapAux) >> 3];    /* aux class table            */
  375.     wrapBackwd:
  376.                         hex string [(wrapForwd - wrapBackwd) >> 3];    /* state table for backup    */
  377.     wrapForwd:
  378.                         hex string [$$Word(wrapLength) - ((wrapForwd - wrapTable) >> 3)]; /* tbl */
  379.                 };
  380.     endWrapTable:
  381.                 array [$$Word(formatCode) == 0] {
  382.                     hex string;                                        /* extra stuff, if any        */
  383.                 };
  384.                 array [$$Word(formatCode) == 1] {
  385.                     array [$$Word(findScriptTableOffset) == 0] {
  386.                         hex string;                                    /* extra stuff, if any        */
  387.                     };
  388.                     array [$$Word(findScriptTableOffset) != 0] {
  389.                         hex string [(findScriptTable[1,1] - endWrapTable) >> 3]; /* xtra stuff?    */
  390.                     };
  391.                 };
  392.                 array [$$Word(formatCode) == 1] {
  393.                     array [$$Word(findScriptTableOffset) != 0] {
  394.     findScriptTable:
  395.                         hex string;                                    /* findScriptTable            */
  396.                     };
  397.                 };
  398.         };
  399. };
  400. /*----------------------------itl4 • International Tokenizer----------------------------*/
  401. type 'itl4' {
  402.         unsigned hex integer;                                        /* flags                    */
  403.         literal longint = 'itl4';                                    /* resource type            */
  404.         integer;                                                    /* resource ID                */
  405.         unsigned hex integer;                                        /* version number            */
  406.     formatCode:
  407.         switch {
  408.             case noLengthFields:
  409.                 key integer = 0;                                    /* format code                */
  410.                 integer = 0;                                        /* reserved                    */
  411.                 longint = 0;                                        /* reserved                    */
  412.                 integer = 8;                                        /* # of table entries        */
  413.                 unsigned longint = mapCharTable >> 3;                /* MapChar offset            */
  414.                 unsigned longint = stringCopyCode >> 3;                /* stringCopy offset        */
  415.                 unsigned longint = extendFetchCode >> 3;            /* extendFetch offset        */
  416.                 unsigned longint = unTokenTable >> 3;                /* unToken offset            */
  417.                 unsigned longint = defaultPartsTable >> 3;            /* defaultParts offset        */
  418.                 unsigned longint = whiteSpaceList[1] >> 3;            /* whiteSpaceList offset    */
  419.                 unsigned longint = 0;                                /* reserved offset            */
  420.                 unsigned longint = 0;                                /* reserved offset            */
  421.             case haveLengthFields:
  422.                 key integer = 1;                                    /* format code                */
  423.                 integer = 0;                                        /* reserved                    */
  424.                 longint = 0;                                        /* reserved                    */
  425.                 integer = 8;                                        /* # of table entries        */
  426.                 unsigned longint = mapCharTable >> 3;                /* MapChar offset            */
  427.                 unsigned longint = stringCopyCode >> 3;                /* stringCopy offset        */
  428.                 unsigned longint = extendFetchCode >> 3;            /* extendFetch offset        */
  429.                 unsigned longint = unTokenTable >> 3;                /* unToken offset            */
  430.                 unsigned longint = defaultPartsTable >> 3;            /* defaultPartsTable offset    */
  431.                 unsigned longint = whiteSpaceList[1] >> 3;            /* whiteSpaceList offset    */
  432.                 unsigned longint = 0;                                /* reserved offset            */
  433.                 unsigned longint = 0;                                /* reserved offset            */
  434.                 integer;                                            /* MapChar length            */
  435.                 integer;                                            /* StringCopy length        */
  436.                 integer;                                            /* extendFetch length        */
  437.                 integer;                                            /* unToken length            */
  438.                 integer;                                            /* defaultPartsTable length    */
  439.                 integer;                                            /* whiteSpaceList length    */
  440.                 integer = 0;                                        /* reserved length            */
  441.                 integer = 0;                                        /* reserved length            */
  442.         };
  443.  
  444.  
  445.         unsigned longint;                                            /* extendFetch abort offset    */
  446.         longint = $$CountOf(MapChar);
  447.     mapCharTable:
  448.         array MapChar {
  449.             byte;
  450.         };
  451.  
  452.     extendFetchCode:
  453.         hex string [(stringCopyCode - extendFetchCode) >> 3];        /* extendFetch code            */
  454.     stringCopyCode:
  455.         hex string [(unTokenTable - stringCopyCode) >> 3];            /* stringCopy code            */
  456.     unTokenTable:
  457.         integer = (defaultPartsTable - unTokenTable) >> 3;            /* unToken table size        */
  458.     unTokenCount:
  459.         integer = $$CountOf(unTokenStringOffsets) - 1;
  460.         array unTokenStringOffsets {
  461.             integer;                                                /* offset to token strings    */
  462.         };
  463.         array [$$Word(unTokenCount) + 1] {
  464.             pstring;                                                /* token strings            */
  465.             align word;
  466.         };
  467.  
  468.     defaultPartsTable:
  469.         integer;                                                    /* version number            */
  470.         wide array [31] {
  471.             unsigned byte;
  472.             char;
  473.         };
  474.         integer;                                                    /* size                        */
  475.         wide array [10] {
  476.             unsigned byte;
  477.             char;
  478.         };
  479.         integer;                                                    /* size                        */
  480.         wide array [10] {
  481.             unsigned byte;
  482.             char;
  483.         };
  484.         integer;                                                    /* size                        */
  485.         wide array [10] {
  486.             unsigned byte;
  487.             char;
  488.         };
  489.         integer;                                                    /* size                        */
  490.         wide array [10] {
  491.             unsigned byte;
  492.             char;
  493.         };
  494.         hex string [20] = "";
  495.  
  496.         array [$$BitField(formatCode,30*8,32) != 0] {
  497.     whiteSpaceList:
  498.             integer = (whiteSpaceListEnd[1] - whiteSpaceList[1]) >> 3; /* whiteSpaceList size    */
  499.     whiteSpaceListCount:
  500.             integer = $$CountOf(whiteSpaceStringOffsets);
  501.             array whiteSpaceStringOffsets {
  502.                 integer;                                            /* offset to string            */
  503.             };
  504.             array [$$Word(whiteSpaceListCount[1])] {
  505.                 pstring;                                            /* whitespace string        */
  506.                 align word;
  507.             };
  508.     whiteSpaceListEnd:
  509.         };
  510. };
  511. /*----------------------------itlb • International Script Bundle------------------------*/
  512. type 'itlb' {
  513.         integer;                                                /* itl0 id number        */                /*<6>*/
  514.         integer;                                                /* itl1 id number        */                /*<6>*/
  515.         integer;                                                /* itl2 id number        */                /*<6>*/
  516.         unsigned hex integer;                                    /* script flags - see
  517.                                                                    smScriptFlags info
  518.                                                                    in ScriptEqu.a        */
  519.         integer;                                                /* itl4 id number        */                /*<6>*/
  520.         integer;                                                /* id number of optional itl5, or 0    */    /*<13>*/
  521.         unsigned integer;                                        /* Script language        */
  522.         unsigned integer;                                        /* high byte - number
  523.                                                                    representation code,
  524.                                                                    low byte - date
  525.                                                                    representation code    */
  526.         integer;                                                /* KCHR id number        */                /*<6>*/
  527.         integer;                                                /* id no. of SICN or kcs#,kcs4,kcs8    */    /*<6>*/
  528.         unsigned longint;                                        /* size of script's local record    */    /*<6>*/
  529.         integer;                                                /* default monospace FOND ID        */    /*<6>*/
  530.         unsigned integer;                                        /* default monospace font size        */    /*<6>*/
  531.         integer;                                                /* preferred FOND ID                */    /*<6>*/
  532.         unsigned integer;                                        /* preferred font size                */    /*<6>*/
  533.         integer;                                                /* default small FOND ID            */    /*<6>*/
  534.         unsigned integer;                                        /* default small font size            */    /*<6>*/
  535.         integer;                                                /* default system FOND ID            */    /*<6>*/
  536.         unsigned integer;                                        /* default system font size            */    /*<6>*/
  537.         integer;                                                /* default application FOND ID        */    /*<6>*/
  538.         unsigned integer;                                        /* default application font size    */    /*<6>*/
  539.         integer;                                                /* default Help Mgr FOND ID            */    /*<6>*/
  540.         unsigned integer;                                        /* default Help Mgr font size        */    /*<6>*/
  541.         hex byte;                                                /* valid styles for script                /*<10>*/
  542.         hex byte;                                                /* alias style for script            */    /*<10>*/
  543. };
  544. /*----------------------------itlc • International Configuration------------------------*/
  545. type 'itlc' {
  546.         unsigned integer;                                        /* system script code    */
  547.         unsigned integer;                                        /* keyboard cache size    */
  548.         byte            noFontForce, fontForce = 255;            /* font force flag        */
  549.         byte            noIntlForce, intlForce = 255;            /* intl force flag        */
  550.         byte            noOldKeyboard, oldKeyboard = 255;        /* old keyboard            */
  551.         unsigned hex byte;                                        /* general flags - see
  552.                                                                    smGenFlags info in
  553.                                                                    ScriptEqu.a            */
  554.         integer;                                                /* script icon offset    (not used in Sys 7 ) */
  555.         byte            rightOffset, leftOffset = 255;            /* menu side for offset    (not used in Sys 7 ) */
  556.         byte;                                                    /* icon data (rsvd)        (not used in Sys 7 ) */
  557.         unsigned integer;                                        /* pref. region code    */
  558.  
  559.         /* system flags */
  560.         boolean            directionLeftRight, directionRightLeft;    /* to set TESysJust        */    /*<23>*/
  561.         fill bit[15];                                            /* reserved                */    /*<23>*/
  562.  
  563.         /* for future expansion */
  564.         hex string [32];                                        /* reserved                */    /*<23>*/
  565. };
  566. /*----------------------------itlk • Keyboard-dependent Remapping-----------------------*/
  567. type 'itlk' {
  568.         integer = $$CountOf(RemapItemArray);
  569.         wide array RemapItemArray {
  570.             integer;                                            /* keyboard type        */
  571.             hex byte;                                            /* old modifier bits    */
  572.             byte;                                                /* old key code            */
  573.             hex byte;                                            /* modifier bits mask    */
  574.             byte;                                                /* key code mask        */
  575.             hex byte;                                            /* new modifier bits    */
  576.             byte;                                                /* new key code            */
  577.         };
  578. };
  579. /*----------------------------itlm • Multiscript mapping/sorting-----------------------*/
  580. type 'itlm' {
  581.         unsigned hex integer;                                    /* version number                    */
  582.         unsigned hex integer;                                    /* format code                        */
  583.         unsigned integer = 3;                                    /* number of offset/length pairs    */
  584.         unsigned longint = scriptData >> 3;                        /* offset to scriptData table        */
  585.         unsigned longint = (endScriptData - scriptData) >> 3;    /* length of scriptData table        */
  586.         unsigned longint = langData >> 3;                        /* offset to langData table            */
  587.         unsigned longint = (endLangData - langData) >> 3;        /* length of langData table            */
  588.         unsigned longint = regionData >> 3;                        /* offset to regionData table        */
  589.         unsigned longint = (endRegionData - regionData) >> 3;    /* length of regionData table        */
  590.  
  591. scriptData:
  592.         integer;                                    /* max script code for script->lang mapping        */
  593.         integer;                                    /* default lang code for scripts not in table    */
  594.         integer = $$CountOf(scriptArray);            /* number of entries in table                    */
  595.         array scriptArray {                            /* entries are ordered by script sort order        */
  596.             integer;                                /* script code                                    */
  597.             integer;                                /* default language code for script                */
  598.         };
  599. endScriptData:
  600.  
  601. langData:
  602.         integer;                                    /* max lang code for lang->script mapping        */
  603.         integer;                                    /* default script code for langs not in table    */
  604.         integer = $$CountOf(langArray);                /* number of entries in table                    */
  605.         array langArray {                            /* entries are ordered by lang sort order        */
  606.             integer;                                /* language code                                */
  607.             integer;                                /* code    of script to which this lang belongs    */
  608.         };
  609. endLangData:
  610.  
  611. regionData:
  612.         integer;                                    /* max region code for region->lang mapping        */
  613.         integer;                                    /* default lang code for regions not in table    */
  614.         integer = $$CountOf(regionArray);            /* number of entries in table                    */
  615.         array regionArray {                            /* entries are ordered by region sort order        */
  616.             integer;                                /* region code                                    */
  617.             integer;                                /* parent language code for region                */
  618.         };
  619. endRegionData:
  620. };
  621.  
  622.  
  623. #endif /* __INTLRESOURCES_R__ */
  624.  
  625.